﻿using System;
using System.Diagnostics.Contracts;
using System.Linq.Expressions;

namespace Library.Linq
{
    public interface IQuantifiable
    {
        [Pure]
        bool Exists();

        [Pure]
        bool Exists(Delegate predicate);

        [Pure]
        bool ForAll(Delegate predicate);
    }

    public interface IQuantifiable<T>
    {
        [Pure]
        bool Exists();

        [Pure]
        bool Exists(Func<T, bool> predicate);

        [Pure]
        bool ForAll(Func<T, bool> predicate);
    }
}
